#ifndef __UART_TO_LORA_FRAME_H__
#define __UART_TO_LORA_FRAME_H__

#include <stdint.h>
#include <stdbool.h>

/* 传感器数据最大字节长度 */
#define MAX_PAYLOAD_LENGTH  45

/* 串口帧最大长度 */
#define MAX_FRAME_LENGTH    MAX_PAYLOAD_LENGTH + 5

/*
* Function Name  : crc16(uint8_t* buf, uint8_t u8Len)
* Description    : 该函数用于生成串口帧中的校验码，被crc16(uint8_t* buf, uint8_t u8Len)调用
*                  
* Input          : - in  buf 输入数组 - u8Len  输入数组有效数据长度
*                
* Output         : 
* Return         : uint16_t类型的校验码
*/
uint16_t crc16(uint8_t* buf, uint8_t u8Len);

/*
* Function Name  : genMsgFrame(uint8_t* in, uint8_t* inlen, uint8_t* out, uint8_t* outlen)
* Description    : 该函数用于生成发送到LoRa模块串口的消息帧数组
*                  
* Input          : - in  输入数组 - inlen  输入数组有效数据长度
*                  - out 输出数组 - outlen 输出数组有效长度
* Output         : 
* Return         : true | false 成功或失败
*/
bool genMsgFrame(uint8_t* in, uint8_t* inlen, uint8_t* out, uint8_t* outlen);

#endif
